package com.su.sweet.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.su.sweet.model.ActExtDef;
import com.su.sweet.model.AssignVO;
import com.su.sweet.model.FlowEditVO;
import com.su.sweet.model.PageExt;
import com.su.sweet.service.ActExtDefService;
import lombok.extern.slf4j.Slf4j;
import org.noear.snack.ONode;
import org.noear.solon.annotation.*;

import java.math.BigInteger;

/**
 * 扩展模型定义接口
 */
@Slf4j
@Mapping("/flow")
@Controller
public class ActExtDefController {
    @Inject
    private ActExtDefService actExtDefService;

    /**
     * 创建一个扩展流程
     */
    @Post
    @Mapping("/model/create")
    public String createEditorJson(ActExtDef actExtDef) {
        return actExtDefService.create(actExtDef);
    }

    /**
     * 获取流程设计图JSON
     */
    @Get
    @Mapping("/model/json/{modelId}")
    public ONode selectEditorJson(@Path("modelId") String modelId) {
        return actExtDefService.selectEditorJson(modelId);
    }

    /**
     * 保存流程设计图
     */
    @Put
    @Mapping("/model/save")
    public String saveEditorXml(FlowEditVO flowEdit) {
        return actExtDefService.saveEditorXml(flowEdit);
    }

    /**
     * 发布流程设计图
     */
    @Post
    @Mapping("/model/deploy/{uid}")
    public String deployModel(@Path("uid") BigInteger uid) {
        return actExtDefService.deployModel(uid);
    }

    /**
     * 查询需要选择的对象（用户、用户组、角色）
     */
    @Post
    @Mapping("/model/query/assign")
    public IPage<AssignVO> queryAssign(PageExt<AssignVO> queryInfo) {
        return actExtDefService.queryAssign(queryInfo);
    }

    /**
     * 查询扩展定义
     */
    @Post
    @Mapping("/model/query/page")
    public IPage<ActExtDef> selectPage(PageExt<ActExtDef> queryInfo) {
        return actExtDefService.selectPage(queryInfo);
    }

    @Get
    @Mapping("/model/svg/{modelId}")
    public String selectModelSvg(@Path("modelId") String modelId) {
        return actExtDefService.selectModelSvg(modelId);
    }
}
